package com.tdd.mockexample;

import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import org.junit.Before;
import org.junit.Test;

public class LoginServiceTest {
	private Account account;
	private AccountRepoisitory repository;
	private LoginService loginService;

	@Before
	public void init() {
		account = mock(Account.class);
		repository = mock(AccountRepoisitory.class);
		loginService = new LoginService(repository);
	}

	@Test
	public void loginWithCorrectPasswordAndAccount() {
		when(repository.findAccountNamed(anyString())).thenReturn(account);
		when(account.passwordMatches(anyString())).thenReturn(true);


		loginService.login("account", "password");

		verify(account, times(1)).setLoggedIn(true);
	}
}
